package cn.yyh.serviceOrg.utils;

import cn.yyh.commons.domain.LoginInfo;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.ObjectUtils;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.servlet.http.HttpServletRequest;

/**
 * 登录上下文
 * 1.登录人的信息
 * 2.当前登录人的权限
 * <p>
 * 我想在一个非受Spring容器管理的对象中，获取受Spring容器管理的对象？？？ 怎么整
 * 1.我们需要先获得Spring容器
 * 2.通过Spring容器我们就可以获取想要的对象了
 *
 * @author 杨永航
 * @version 1.0
 * @Title: ContextUtil
 * @Package: cn.yyh.basic.utils
 * @date 2021/7/5
 */
public class ContextUtil {

    public static LoginInfo getLoginInfo(HttpServletRequest request) {
        String token = request.getHeader("token");
        if (!ObjectUtils.isEmpty(token)) {
            WebApplicationContext webApplicationContext =
                    WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
            RedisTemplate redisTemplate = (RedisTemplate) webApplicationContext.getBean("redisTemplate");
            Object loginInfo = redisTemplate.opsForValue().get(token);
            if (loginInfo != null) {
                return (LoginInfo) loginInfo;
            }
        }
        return null;
    }
}
